package com.ssy.lingxi.marketing.service;

import com.ssy.lingxi.common.model.dto.UserLoginCacheDTO;
import com.ssy.lingxi.common.response.PageData;
import com.ssy.lingxi.common.response.Wrapper;
import com.ssy.lingxi.marketing.api.model.request.GiftCouponRequest;
import com.ssy.lingxi.marketing.model.vo.coupon.request.*;
import com.ssy.lingxi.marketing.model.vo.coupon.response.*;

import java.util.List;

/**
 * App优惠券服务类
 * @author yzc
 * @version 2.0.0
 * @date 2021/9/13
 */
public interface IMobileCouponService {

    /**
     * 我的优惠券 - 数量统计
     * @param loginUser 登录用户信息
     * @param request 请求参数
     * @return 返回结果
     */
    Wrapper<MobileCouponDetailCountResponse> getCouponCount(UserLoginCacheDTO loginUser, MobileCouponDetailCountRequest request);

    /**
     * 我的优惠券 - 分页列表
     * @param loginUser 登录用户信息
     * @param request 接口参数
     * @return 返回结果
     */
    Wrapper<PageData<MobileCouponDetailResponse>> pageCouponDetail(UserLoginCacheDTO loginUser, MobileCouponPageRequest request);
    /**
     * 我的优惠券 - 分页列表(web)
     * @param loginUser 登录用户信息
     * @param request 接口参数
     * @return 返回结果
     */
    Wrapper<PageData<WebCouponDetailResponse>> pageCouponDetailByWeb(UserLoginCacheDTO loginUser, WebCouponPageRequest request);

    /**
     * 提交订单 - 选择的优惠券列表
     * @param loginUser 登录用户信息
     * @param request 请求参数
     * @return 返回结果
     */
    Wrapper<List<MobileCouponDetailCanUseResponse>> listOrderCouponDetail(UserLoginCacheDTO loginUser, MobileGoodsCartRequest request);

    /**
     * 进货单 - 店铺优惠券列表
     * @param loginUser 登录用户信息
     * @param request 接口参数
     * @return 返回结果
     */
    Wrapper<List<MobileCouponResponse>> listShopCoupon(UserLoginCacheDTO loginUser, MobileShopCouponListRequest request);

    /**
     * 活动页 - 自动领取优惠券
     * @param loginUser 登录用户信息
     * @param request 请求参数
     * @return 返回结果
     */
    Wrapper<List<MobileCouponDetailResponse>> autoReceiveCoupon(UserLoginCacheDTO loginUser, AutoReceiveCouponRequest request);

    /**
     * 活动页 - 领取优惠券
     * @param loginUser 登录用户信息
     * @param request 请求参数
     * @return 返回结果
     */
    Wrapper<ReceiveCouponResponse> receiveCoupon(UserLoginCacheDTO loginUser, ReceiveCouponRequest request);

    /**
     * 消息队列 - 赠品活动赠优惠券
     * @param request 请求参数
     * @return 返回结果
     */
    void handleMqMsgReceiveCoupon(GiftCouponRequest request);

    /**
     * 查询优惠券所关联的商品信息
     * @param loginUser 登录用户信息
     * @param request 请求参数
     * @return 返回结果
     */
    Wrapper<List<MobileActivityRelationGoodsResp>> listMerchantCouponRelationGoods(UserLoginCacheDTO loginUser, MobileCouponGoodsRelationReq request);
    /**
     * 查询优惠券所关联的商品信息（到sku级别）
     * @param loginUser 登录用户信息
     * @param request 请求参数
     * @return 返回结果
     */
    Wrapper<List<MobileActivityRelationGoodsResp>> listMerchantCouponRelationGoodsSku(UserLoginCacheDTO loginUser, MobileCouponGoodsRelationReq request);
}
